package com.idormy.sms.forwarder.service

import android.accessibilityservice.AccessibilityService
import android.accessibilityservice.AccessibilityServiceInfo
import android.content.Intent
import android.view.accessibility.AccessibilityEvent
import com.idormy.sms.forwarder.activity.SplashActivity
import com.idormy.sms.forwarder.utils.Log

/**
 * 无障碍服务启动器
 * 
 * 功能：
 * - 提供通过广播快速启动应用的能力
 * - 配合 QuickLaunchReceiver 使用
 * 
 * 使用方法：
 * 1. 在系统设置中启用此无障碍服务
 * 2. 通过广播启动：adb shell am broadcast -a com.idormy.sms.forwarder.QUICK_LAUNCH
 * 3. 或通过 Tasker 等自动化工具发送广播
 * 
 * 注意：
 * - 此服务不监听任何按键或屏幕内容
 * - 仅提供启动应用的接口
 * - 不收集任何个人信息
 */
class LauncherAccessibilityService : AccessibilityService() {

    companion object {
        private const val TAG = "LauncherAccessibility"
        private var instance: LauncherAccessibilityService? = null
        
        // 是否已启用服务
        val isEnabled: Boolean
            get() = instance != null
        
        // 手动触发启动应用
        fun launchApp() {
            instance?.startApp()
        }
    }

    override fun onServiceConnected() {
        super.onServiceConnected()
        instance = this
        
        val info = AccessibilityServiceInfo().apply {
            // 监听所有事件类型
            eventTypes = AccessibilityEvent.TYPES_ALL_MASK
            
            // 反馈类型
            feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC
            
            // 不需要特定权限
            flags = AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS
            
            // 通知超时
            notificationTimeout = 100
        }
        
        serviceInfo = info
        
        Log.i(TAG, "无障碍服务已启动")
    }

    override fun onAccessibilityEvent(event: AccessibilityEvent?) {
        // 不监听任何事件，仅提供启动接口
    }

    override fun onInterrupt() {
        Log.w(TAG, "无障碍服务被中断")
    }

    override fun onDestroy() {
        super.onDestroy()
        instance = null
        Log.i(TAG, "无障碍服务已停止")
    }

    /**
     * 启动应用
     */
    private fun startApp() {
        try {
            Log.i(TAG, "通过无障碍服务启动应用")
            
            val intent = Intent(this, SplashActivity::class.java).apply {
                flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP
            }
            startActivity(intent)
            
            Log.i(TAG, "应用启动成功")
        } catch (e: Exception) {
            Log.e(TAG, "启动应用失败: ${e.message}")
            e.printStackTrace()
        }
    }


}
